const fs = require('fs');
const path = require('path');

// 读取JSON文件
function readJsonFile(filePath) {
  try {
    const content = fs.readFileSync(filePath, 'utf8');
    return content;
  } catch (error) {
    console.error('读取文件失败:', error.message);
    process.exit(1);
  }
}

// 尝试解析JSON，找出问题
function validateJson(jsonString) {
  try {
    JSON.parse(jsonString);
    console.log('JSON格式正确！');
    return true;
  } catch (error) {
    console.error('JSON格式错误:', error.message);
    return false;
  }
}

// 修复JSON中常见的格式问题
function fixJson(jsonString) {
  // 修复多余的逗号
  let fixed = jsonString.replace(/,\s*}/g, '}').replace(/,\s*]/g, ']');
  
  // 尝试修复未闭合的字符串（通过检查引号匹配）
  // 注意：这只是一个简单的修复，可能不能处理所有情况
  const quotes = fixed.match(/"/g);
  if (quotes && quotes.length % 2 !== 0) {
    console.log('检测到引号不匹配，尝试修复...');
    // 简单地在末尾添加引号（可能不是最佳解决方案，但可以尝试）
    fixed += '"';
  }
  
  return fixed;
}

// 主函数
function main() {
  const jsonPath = path.join(__dirname, 'manifest.json');
  console.log('正在检查文件:', jsonPath);
  
  let jsonContent = readJsonFile(jsonPath);
  
  if (!validateJson(jsonContent)) {
    console.log('尝试修复JSON格式...');
    const fixedContent = fixJson(jsonContent);
    
    console.log('修复后再次验证...');
    if (validateJson(fixedContent)) {
      // 备份原始文件
      fs.writeFileSync(jsonPath + '.bak', jsonContent, 'utf8');
      console.log('已备份原始文件到:', jsonPath + '.bak');
      
      // 写入修复后的内容
      fs.writeFileSync(jsonPath, fixedContent, 'utf8');
      console.log('JSON文件修复成功！');
    } else {
      console.error('修复失败，请手动检查JSON文件。');
      // 打印文件内容以便手动检查
      console.log('文件内容预览:');
      const lines = jsonContent.split('\n');
      lines.forEach((line, index) => {
        console.log(`${index + 1}: ${line}`);
      });
    }
  }
}

main();